// pages/home/home.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    showCommingSoonModal: false,
    commingSoonModalTitle: '提示',
    commingSoonModalContent: '敬请期待！',
    showTraditionNamingModal: false,
    showDuplicateNameModal: false,
    fatherName: '',
    motherName: '',
    babyName: '',
    gender: '男', // 默认性别为男
    loading: false // 新增 loading 状态
  },

  // 显示敬请期待弹窗
  showCommingSoonPopUp() {
    this.setData({ showCommingSoonModal: true });
  },

  // 隐藏敬请期待弹窗
  hideCommingSoonPopUp() {
    this.setData({ showCommingSoonModal: false });
  },

  // 显示传统起名弹窗
  showTraditionNamingModal(){
    this.setData({ showTraditionNamingModal: true });
  },

  // 隐藏传统起名弹窗
  hideTraditionNamingModal(){
    this.setData({ showTraditionNamingModal: false });
  },

  // 显示重名率查询弹窗
  showDuplicateNameModal(){
    this.setData({ showDuplicateNameModal: true });
  },

  // 隐藏重名率查询弹窗
  hideDuplicateNameModal(){
    this.setData({ showDuplicateNameModal: false });
  },

  // 确认按钮
  handleConfirm() {
    console.log('用户点击了确定');
    this.hideCommingSoonPopUp();
  },

  // 取消按钮
  handleCancel() {
    console.log('用户点击了取消');
    this.hideCommingSoonPopUp();
  },

  // 通过编程式导航跳转到tabBar页面
  gotoContact(){
    wx.switchTab({
      url: '/pages/contact/contact'
    })
  },

  // 通过编程式导航跳转到普通页面
  gotoAiNaming(){
    wx.navigateTo({
      url: '/pages/ainaming/ainaming',
    })
  },

  // 输入框
  onDadNameInput(e) {
    this.setData({
      fatherName: e.detail.value
    });
  },
  onMomNameInput(e) {
    this.setData({
      motherName: e.detail.value
    });
  },
  onGenderChange(e) {
    this.setData({
      gender: e.detail.value
    });
  },
  onBabyNameInput(e){
    this.setData({
      babyName: e.detail.value
    });
  },
  async generateName() {
    console.log("起名方法。。");
    // 显示 Loading
    this.setData({ loading: true });

    // 拿到爸爸妈妈姓名、宝宝性别
    const { fatherName, motherName, gender } = this.data;
    console.log(fatherName, motherName, gender);

    // 提示词模板
    let prompt = `爸爸名字是${fatherName}，妈妈名字是${motherName}，请给${gender === '男' ? '儿子' : '女儿'}起几个名字！需要详细解释每一个名字的寓意！`;
    console.log(prompt);

    try {
        // 将提示词发送给AI
        const response = await this.sendMessage(prompt);
        console.log("response: ", response);

        // 跳转到/traditionaming/traditionaming页面，并在页面上显示res
        wx.navigateTo({
            url: `/pages/traditionnaming/traditionnaming?response=${encodeURIComponent(response)}`
        });
    } catch (error) {
        console.error("获取名字失败: ", error);
    } finally {
        // 隐藏 Loading
        this.setData({ loading: false });
        this.hideTraditionNamingModal();
    }
  },
  async serachDuplicateName(){
    console.log("查询重名率方法。。");
    // 显示 Loading
    this.setData({ loading: true });
    // 拿到宝宝姓名
    const babyName = this.data.babyName;
    console.log("babyName: ",babyName);
    // 组装提示词
    let prompt = `${babyName}，这个名字在全国有多少人使用`;
    console.log("prompt: ",prompt);
    // 调用大模型API获取答案
    try {
      // 将提示词发送给大模型API，并获取返回结果
      const response = await this.sendMessage(prompt);
      console.log("response: ", response);
      // 跳转到/traditionaming/traditionaming页面，并在页面上显示res
      wx.navigateTo({
        url: `/pages/traditionnaming/traditionnaming?response=${encodeURIComponent(response)}`
    });
    } catch (error) {
      console.error("获取重名率失败: ", error);
    } finally {
      // 隐藏 Loading
      this.setData({ loading: false });
      this.hideDuplicateNameModal();
    }
  },

  // 向后端chat接口发送请求
  sendMessage: function(prompt) {
    console.log("sendMessage方法。。。");
    this.setData({ loading: true });
    return new Promise((resolve, reject) => {
      try {
        // 发送消息获取响应
        wx.request({
          url: 'https://nomina.cn:8090/chat',
          method: 'GET',
          data: {
            prompt: prompt, // 请求参数
          },
          success: (res) => {
            console.log('API 返回:', res);
            // 处理响应
            const aiResponse = res.data.choices[0].message.content;
            console.log('aiResponse: ', aiResponse);
            resolve(aiResponse);
          },
          fail: (err) => {
            console.error('请求失败', err);
            reject(err);
          },
          complete: () => {
            this.setData({ loading: false });
          }
        });
      } catch (err) {
        console.error("API调用失败:", err);
        reject(err);
        this.setData({ loading: false });
      }
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.reloadData();
  },
  // 下拉刷新时执行的方法
  reloadData(){
    console.log("下拉刷新。。");
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})